package org.acervus.operador;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import org.acervus.conexao.ConnMySQL;

/**
 * @author Eziel Soares, Giordano Giuliano, Lenilson Regis
 */
public class OperadorController {

    PreparedStatement pstm;
    ResultSet rs;
    private boolean validado = false;
    String buscarOperador = "SELECT * FROM operador WHERE nome LIKE ? ORDER BY nome";
    String cadastrarOperador = "INSERT INTO operador (login, senha, matricula, nome, email) VALUES(?,?,?,?,?)";
    String alterarOperador = "UPDATE operador SET login = ?, senha = ?, matricula = ?, nome = ?, email = ?"
            + "WHERE id = ?";
    String removerOperador = "DELETE FROM operador WHERE id = ?";
    String validarOperador = "SELECT * FROM operador WHERE login = ? AND senha = ?";

    public OperadorController() {
    }

    public void alterarOperador(OperadorBean operador) {
        try {
            ConnMySQL acervusbd = new ConnMySQL();
            pstm = acervusbd.doConnect().prepareStatement(alterarOperador);
            pstm.setString(1, operador.getLogin());
            pstm.setString(2, operador.getSenha());
            pstm.setString(3, operador.getMatricula());
            pstm.setString(4, operador.getNome());
            pstm.setString(5, operador.getEmail());
            pstm.setInt(6, operador.getId());
            pstm.executeUpdate();
            acervusbd.doDesconnect();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public void cadastrarOperador(OperadorBean operador) {
        try {
            ConnMySQL acervusbd = new ConnMySQL();
            pstm = acervusbd.doConnect().prepareStatement(cadastrarOperador);
            pstm.setString(1, operador.getLogin());
            pstm.setString(2, operador.getSenha());
            pstm.setString(3, operador.getMatricula());
            pstm.setString(4, operador.getNome());
            pstm.setString(5, operador.getEmail());
            pstm.executeUpdate();
            acervusbd.doDesconnect();
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

    public List<OperadorBean> listarOperador(String nome) {
        List<OperadorBean> operador = new ArrayList();
        try {
            ConnMySQL acervusbd = new ConnMySQL();
            pstm = acervusbd.doConnect().prepareStatement(buscarOperador);
            pstm.setString(1, nome);
            rs = pstm.executeQuery();
            OperadorBean op;
            while (rs.next()) {
                op = new OperadorBean();
                op.setId(rs.getInt("id"));
                op.setLogin(rs.getString("login"));
                op.setSenha(rs.getString("senha"));
                op.setMatricula(rs.getString("matricula"));
                op.setNome(rs.getString("nome"));
                op.setEmail(rs.getString("email"));
                operador.add(op);
            }
            acervusbd.doDesconnect();

        } catch (Exception e) {
            e.printStackTrace();
        }
        return operador;
    }

    public void removerOperador(OperadorBean operador) {
        try {
            ConnMySQL acervusbd = new ConnMySQL();
            pstm = acervusbd.doConnect().prepareStatement(removerOperador);
            pstm.setInt(1, operador.getId());
            pstm.executeUpdate();
            acervusbd.doDesconnect();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public OperadorBean validarOperador(String login, String senha) {
        OperadorBean op = new OperadorBean();
        try {
            ConnMySQL acervusbd = new ConnMySQL();
            pstm = acervusbd.doConnect().prepareStatement(validarOperador);
            pstm.setString(1, login);
            pstm.setString(2, senha);
            rs = pstm.executeQuery();
            while (rs.next()) {
                op.setId(rs.getInt("id"));
                op.setLogin(rs.getString("login"));
                op.setSenha(rs.getString("senha"));
                op.setMatricula(rs.getString("matricula"));
                op.setNome(rs.getString("nome"));
                op.setEmail(rs.getString("email"));
                setValidado(true);
            }
            acervusbd.doDesconnect();

        } catch (Exception e) {
            e.printStackTrace();
        }
        return op;
    }

    /**
     * @return the validado
     */
    public boolean isValidado() {
        return validado;
    }

    /**
     * @param validado the validado to set
     */
    public void setValidado(boolean validado) {
        this.validado = validado;
    }
}